﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using System.Data;
using DevExpress.Web.ASPxGridView;


namespace WebApplication1.Admin
{
    public partial class AgrupacionesListado : System.Web.UI.Page
    {
        #region AgrupacionesDanzaDataTableCache
        private DataTable AgrupacionesDanzaDataTableCache
        {
            get
            {
                DataTable objTable = null;
                if (Cache["AgrupacionesListado.aspx" + Session.SessionID] != null)
                    objTable = (DataTable)Cache["AgrupacionesListado.aspx" + Session.SessionID];
                return objTable;
            }
            set
            {
                if (value != null)
                {
                    Cache.Insert("AgrupacionesListado.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
                }
            }
        } 
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {

                if (Session["USU_USUARIO"] == null)
                {
                    Response.Redirect("../login.aspx");
                    return;
                }

                AgrupacionesDanzaDataTableCache = null;
                BindDatosAgrupaciones();
            }
            else
            {
                if (AgrupacionesDanzaDataTableCache != null)
                {
                    ASPxGridViewAgrupaciones.DataSource = AgrupacionesDanzaDataTableCache;
                    ASPxGridViewAgrupaciones.DataBind();
                }
            }

        }
        #endregion

        #region StrAgrupId
        public string StrAgrupId
        {
            get
            {
                if (ViewState["StrAgrupId"] != null)
                    return ViewState["StrAgrupId"].ToString();
                return "";
            }
            set { ViewState["StrAgrupId"] = value; }
        }
        #endregion

        #region crearContextItems
        private void crearContextItems()
        {
            try
            {
                Context.Items["StrAgrupId"] = StrAgrupId;
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
            }
        }
        #endregion

        #region GetDataView
        private DataTable GetDataView(ASPxGridView grid)
        {
            DataTable dt = new DataTable();
            foreach (GridViewColumn col in grid.VisibleColumns)
            {
                GridViewDataColumn dataColumn = col as GridViewDataColumn;
                if (dataColumn == null) continue;
                dt.Columns.Add(dataColumn.FieldName);
            }
            for (int i = 0; i < grid.VisibleRowCount; i++)
            {
                DataRow row = dt.Rows.Add();
                foreach (DataColumn col in dt.Columns)
                    row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
            }
            return dt;
        }
        #endregion

        #region BindDatosAgrupaciones
        private void BindDatosAgrupaciones()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.ART_AGRUPACIONES_DANZAs
                            join b in contexto.ART_TIPOS_AGRUPACIONEs on a.ATA_ID equals b.ATA_ID
                            join d in contexto.BAS_ZONAS_GEOGRAFICAs on a.ZON_ID equals d.ZON_ID
                            join e in contexto.BAS_ZONAS_GEOGRAFICA1s on d.ZON_PADRE_ID equals e.ZON_ID
                            join f in contexto.ART_TIPOS_AGRUPACIONEs on a.ATA_ID equals f.ATA_ID
                            //from g in
                                //(from g in contexto.ART_AGRUPACIONES_DANZAs where g.AAD_ID == a.AAD_ID select g).DefaultIfEmpty()
                            
                            //(ddlArtClaseEntidadArtistica.SelectedValue != "0" ? f.ACE_ID == Convert.ToInt32(ddlArtClaseEntidadArtistica.SelectedValue) : f.ACE_ID == f.ACE_ID)

                            select new
                            {
                                a.AAD_ID,
                                a.AAD_NOMBRE,
                                a.AAD_CORREO,
                                a.AAD_DIRECCION,
                                a.AAD_TELEFONO,
                                f.ATA_NOMBRE,
                                MUNICIPIO = d.ZON_NOMBRE,
                                DEPARTAMENTO = e.ZON_NOMBRE,
                                a.AAD_ESTADO
                                //g.AAD_NOMBRE,
                                //DESCRIPCION = "",
                                //e.TEA_DESCRIPCION,
                                //f.ACE_NOMBRE
                            };
                if (datos == null) return;
                ASPxGridViewAgrupaciones.BeginUpdate();
                ASPxGridViewAgrupaciones.DataSource = datos;
                ASPxGridViewAgrupaciones.DataBind();
                ASPxGridViewAgrupaciones.EndUpdate();
                AgrupacionesDanzaDataTableCache = GetDataView(ASPxGridViewAgrupaciones);
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
        }
        #endregion

        #region btnNuevo_Click
        protected void btnNuevo_Click(object sender, EventArgs e)
        {

            Server.Transfer("AgrupacionesAdministracion.aspx", true);
        }
        #endregion

        #region btnActualizar_Click
        protected void btnActualizar_Click(object sender, EventArgs e)
        {
            List<object> keyValues = ASPxGridViewAgrupaciones.GetSelectedFieldValues("AAD_ID");

            try
            {
                foreach (object key in keyValues)
                {
                    StrAgrupId = key.ToString();
                }
                crearContextItems();
                Server.Transfer("AgrupacionesAdministracion.aspx", true);
                //Response.Redirect("AgrupacionesAdministracion.aspx", true);
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
            }
        }
        #endregion

        #region Boton Publicar
        protected void btnPublicar_Click(object sender, EventArgs e)
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();

                var datos = from a in contexto.ART_AGRUPACIONES_DANZAs
                            where a.AAD_ID == Convert.ToDecimal(StrAgrupId)
                            select a;

                foreach (var v in datos)
                {
                    v.AAD_ESTADO = "P";
                    contexto.SubmitChanges();

                }
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "LA INFORMACIÓN SE PUBLICÓ EXITOSAMENTE", true);
            }
            catch (Exception ex)
            {

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", ex.Message.ToString(), true);
            }

        }
        #endregion

    }
}